import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import 'amfe-flexible'
import '@/styles/reset.css'
// 第二种/第三种：全局样式表--定制主题 - 覆盖vant变量
import 'vant/lib/index.less' // 所有vant组件的样式(必须是less文件)
// 引入统一的通知方法---提示用户登录成功/失败
import Notify from '@/ui/Notify'
import '@/router/permission'
import '@/filters'

import { NavBar, Sticky, Field, Form, Button, Tabbar, TabbarItem, Icon, Tab, Tabs, Cell, PullRefresh, List, Lazyload, ActionSheet, Popup, Col, Row, Badge, Search, Divider, Tag, CellGroup, Image as VanImage, Dialog, DatetimePicker } from 'vant'

// 问题：后台返回的id是19位。但前端js最大表示的数字只有16位(90xxx)
// 原因：js有效安全数字，9007199254740991，超出后没办法正常表示
// 例如：后台返回1323819148127502312，js打印1323819148127502300
// 解决：引入json-bigint包(内部，把长的数字字符串，拆开转成数组形式)
// 基础用法：
// import bigInt from 'json-bigint'
// const str = '{"id":1323819148127502312}'
// console.log(bigInt.parse(str)) // {"id":BigNumber类型对象(数组每14位拆开大数)--把后台返回的数据json字符串，转成前端js对象
// const data = bigInt.parse(str)
// console.log(data.id.toString()) // 1323819148127502312

Vue.use(NavBar)
Vue.use(Sticky)
Vue.use(Field)
Vue.use(Form)
Vue.use(Button)
Vue.use(Tabbar)
Vue.use(TabbarItem)
Vue.use(Icon)
Vue.use(Tab)
Vue.use(Tabs)
Vue.use(Cell)
Vue.use(PullRefresh)
Vue.use(List)
Vue.use(Lazyload)
// 注册时可以配置额外的选项
Vue.use(Lazyload, {
  lazyComponent: true
})
Vue.use(ActionSheet)
Vue.use(Popup)
Vue.use(Col)
Vue.use(Row)
Vue.use(Badge)
Vue.use(Search)
Vue.use(Divider)
Vue.use(Tag)
Vue.use(CellGroup)
Vue.use(VanImage)
Vue.use(Dialog)
Vue.use(DatetimePicker)

Vue.config.productionTip = false
// 提示用户登录成功/失败
Vue.prototype.$Notify = Notify // $Notify的原型方法

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

// eslint使用细则:
// 让vscode自动修正你的代码
// 1. 下载ESLint插件 - 注意作者名字
//  对插件进行扩展配置(全局)
//  来到settings.json中, 把这两句话添加到对象里最后面
//  "eslint.run": "onType",
//  "editor.codeActionsOnSave": {
//   "source.fixAll.eslint": true
//  },
// 2. 确保脚手架里有node_modules, 而且要让脚手架文件夹作为vscode根目录
// 3. 打开一个js代码, 确保右下角的eslint是V状态(如果不是点击一下选择everyWhere)
// 效果保存自动格式化, 处理eslint红线

// 可能遇到的问题:
// 1. 一保存美化插件又给我缩进了
// (1): vscode设置中 找到 "Format On Save" 把前面的勾去掉
// (2): vscode设置中 找到 "tabsize" 把前面的勾都去掉
// (3): 美化插件都卸载了

// 2. 如果保存单引号又变成了双引号
// vetur插件和eslint插件冲突

// 练习题：
// const arr1 = [1, [2, 3, [4, 5], [6, 7]]]
// function result1 (arr1) {
//   return arr1.toString().split(',')
// }
// console.log(result1(arr1))

// const arr2 = [1, [2, 3, [4, 5], [6, 7]]]
// function result2 (arr2) {
//   while (arr2.some(item => Array.isArray(item))) {
//     arr2 = [].concat(...arr2)
//   }
//   return arr2
// }
// console.log(result2(arr2))

// var arr = [1, [2, 3, [4, 5], [6, 7]]]
// function bianping (arr) {
//   var res = []
//   for (var i = 0; i < arr.length; i++) {
//     var item = arr[i]
//     if (Array.isArray(item)) {
//       console.log(item)
//       res = res.concat(bianping(item))
//     } else {
//       res.push(item)
//     }
//   }
//   return res
// }
// console.log(bianping(arr))
